Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

328
Visualizações
Doxygen y palabra clave "self" en la documentación de PHP

Estoy tratando de documentar mi biblioteca PHP con doxygen, pero no puedo configurarla para que reconozca el uso correcto de la función miembro de mi clase, usando la palabra clave "self". Por ejemplo el siguiente código:

 Class myclass{ public static function myfunc1(){ return 10; } public static function myfunc2(){ return self::myfunc1(); } }

no está correctamente documentado. Doxygen asigna las dos funciones, pero cuando se refiere a la llamada interna o externa a estas funciones, no tiene en cuenta el myfunc1 llamado por myfunc2.

Mi solución en este momento es cambiar el código de la siguiente manera:

 Class myclass{ public static function myfunc1(){ return 10; } public static function myfunc2(){ return myclass::myfunc1(); } }

En este caso, doxygen se refiere correctamente al uso de myfunc1 relacionado con myfunc2. Por supuesto que no me gusta mucho esta solución. ¿Cómo puedo solucionar este problema? Muchísimas gracias

about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Doxygen proporciona la opción de filtro de entrada, que nos permite cambiar el código fuente en el momento de la creación de la documentación. Por ejemplo, nos da la capacidad de interceptar el código y cambiar el código self::myfunc1 a myclass::myfunc1 al vuelo, lo que Doxygen entiende. No cambia el código fuente real de ninguna manera.

Creé un filtro basado en el código de Doxygen PHP Filters con algunas modificaciones, que pueden hacer los cambios por usted.

Cree un archivo /ruta/a/selfFilter.php y coloque el código dentro:

 <?php //Create file /path/to/selfFilter.php $source = file_get_contents($argv[1]); $tokens = token_get_all($source); $classes = array(); foreach($tokens as $key => $token) { if($token[0] == T_CLASS) $classes[] = $tokens[$key+2][1]; } if(!empty($classes)) { list($source, $tail) = explode('class ' . $classes[0], $source, 2); $class_code = ''; for($i = 1; $i < count($classes); $i++) { list($class_code, $tail) = explode('class ' . $classes[$i], $tail, 2); $class_code = preg_replace('#\bself::#', $classes[$i-1].'::', $class_code); $source .= 'class ' . $classes[$i-1] . $class_code; } $class_code = preg_replace('#\bself::#', $classes[count($classes)-1].'::', $tail); $source .= 'class ' . $classes[count($classes)-1] . $class_code; } echo $source;

Actualice las siguientes opciones en su archivo de configuración de doxygen.

 INPUT_FILTER = "php /path/to/selfFilter.php" FILTER_PATTERNS = FILTER_SOURCE_FILES = YES FILTER_SOURCE_PATTERNS =

Asegúrese de que /path/to/selfFilter.php sea ejecutable y que php esté disponible en la ruta; de lo contrario, use la ruta completa de php

 INPUT_FILTER = /usr/bin/php /path/to/selfFilter.php

Si ejecuta el Doxygen ahora, debería funcionar. Por favor, hágamelo saber si tiene algún problema.

Nota: La palabra clave 'clase' debe definirse en minúsculas para que funcionen los filtros anteriores.

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda